# encoding: utf-8
# Author    : Mr.Chen
# Datetime  : 2021/7/6 17:39
# explain   : 绘制满天星
import turtle
import random
import threading
import time

def backSet():
    # 设置画笔的粗细
    turtle.pensize(1)
    # 设置绘图的速度，单位：ms，数值越小，绘图速度越快
    turtle.delay(1)
    # 设置隐藏画笔
    turtle.hideturtle()
    # 设置画布的大小
    turtle.setup(800, 500)
    # 设置画布背景
    turtle.bgcolor('black')

def star(x, y, left_angle, edge_len, color = 'yellow'):
    """
    绘制一个 star
    :param x: 起始 X 坐标
    :param y: 起始 Y 坐标
    :param left_angle: 画笔方向逆时针旋转度数
    :param edge_len: star 边的长度
    :param color: star 的颜色
    :return:
    """
    # 设置颜色
    turtle.pencolor(color)
    # star的内部填虫色
    turtle.fillcolor(color)
    # 设置速度
    turtle.speed(0)

    turtle.pu()  # 抬起画笔
    turtle.goto(x, y)  # 移动到初始位置
    turtle.pd()  # 放下画笔

    # 开始填充图形
    turtle.begin_fill()
    # 画笔方向以水平方向为基准
    # 逆时针转动 left_angle 度
    turtle.left(left_angle)
    # 循环绘制五角星的 5 条边
    for _ in range(5):
        # 向画笔方向移动edge_len像素长度
        # 即：绘制五角星的一条边
        turtle.forward(edge_len)
        # 画笔方向顺时针旋转144度
        # 由于五角星内角是36度，因此旋转180-36=144度
        turtle.right(144)
    turtle.end_fill()  # 填充完成
    # 将画笔方向恢复为水平方向，以免影响后续画图
    turtle.left(-left_angle)

def drawStar():
    for i in range(200):
        # 随机生成起始坐标、画笔方向和五角星边长
        rand_x = random.randint(-400, 400)
        rand_y = random.randint(-250, 180)
        edge_len = random.randint(3, 8)
        left_angle = random.randint(0, 180)
        star(rand_x, rand_y, left_angle, edge_len, '#B7C5D2')

def writeWord():
    turtle.pu()
    turtle.goto(-240, 0)
    turtle.fd(-240)
    turtle.left(50)
    turtle.fd(190)
    turtle.pd()
    turtle.pencolor('#FFC0CB')
    turtle.write("Happy Birthday xxx", font=("Curlz MT", 50))

if __name__ == '__main__':
    backSet()
    writeWord()
    drawStar()
    turtle.done()